package Classic;

public class Demo003 {
    public static void run(){
        //当数字位数不确定时,使用递归代码更简洁
        int[] arr={1,1,1};
        int[] newArr=new int[arr.length];
        int[] used=new int[arr.length];
        meiju(arr,used,newArr,0);
    }

    public static void meiju(int[] arr,int[] used,int[] newArr,int index){
        //终止条件:数组已经填满N个数字
        if(index==arr.length){
            for (int i:newArr
            ) {
                System.out.print(i);
            }
            System.out.println();

        }
        else {
            //递归,往数组 arr 的第index位塞数据
            for(int j=0;j<arr.length;j++){
                if(j==0 || arr[j]!=arr[j-1]) {
                    if (used[j] == 1)
                        continue;
                    newArr[index] = arr[j];
                    used[j] = 1;
                    meiju(arr, used, newArr, index + 1);
                    used[j] = 0;
                }
            }
        }

    }

}
